using PlotlyJS
PlotlyJS.init_notebook(true);
Plotly javascript loaded.
To load again call
init_notebook(true)
INFO: Loading HttpServer methods...
include("visual_profiler.jl")
profiler_plot (generic function with 1 method)
Each rectangle is a task. Mouse over the center for information on the task.
Format of hover text: task name, e = elapsed time, t = start time
thread id -1: master task from main(); it generates seed tasks but otherwise does not participate in the computation
Color scheme: white = wait; grey = scheduler overhead; color = user task
Markers = special events
Format of hover text: event type, t = start time
spawn_to: task inserted in ready queue of a thread
spawn_other: task inserted in ready queue of an idle thread which is different from the assigned thread; thread ids are shown in the hover text
steal: idle thread took a task from the ready queue of another thread
The space between rectangles corresponds to the profiler overhead.
The white rectangles correspond to periods where a thread's queue is empty. In that case, the thread sleeps for x microseconds, with e.g., x = 40.
Note that the OS may decide to suspend a thread at any time in order to run other threads. As a result, the duration of tasks can be highly variable.
ev, tmin, tmax, n_event = read_profile_log("team_sp0.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("team_sp_all.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("ring.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("ring4096.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("ring64.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("ring2.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("ring1.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("gemm.out")
build_profile_plot(ev, 1024)
ev, tmin, tmax, n_event = read_profile_log("gemm_w_init.out")
build_profile_plot(ev, 1024)